/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package op.filtros;

import core.FiltraLigacao;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import op.ContaTelefonica;
import op.Ligacao;
import op.Telefone;

/**
 *
 * @author Jônatas
 */
public class FiltraPorDestino implements FiltraLigacao {

    private Set<Telefone> telefonesPermitidos;

    public FiltraPorDestino(Set<Telefone> telefonesPermitidos) {
        this.telefonesPermitidos = telefonesPermitidos;
    }

    public ContaTelefonica execute(ContaTelefonica contaOriginal) {
        List<Ligacao> ligacoesOriginais = contaOriginal.getLigacoes();
        List<Ligacao> ligacoesFiltradas = new ArrayList<Ligacao>();

        for (Ligacao lig : ligacoesOriginais) {

            Telefone destino = lig.getDestino();
            if (this.telefonesPermitidos.contains(destino)) {
                ligacoesFiltradas.add(lig);
            }

        }

        ContaTelefonica resposta = new ContaTelefonica(contaOriginal.getContaMensal());
        resposta.setLigacoes(ligacoesFiltradas);
        return resposta;
    }
}
